要使用api platform ,我們必須先執行以下command來安裝它的bundle
composer require api
API 會被套用在Entity實體類上,
雖然我們這三十篇沒有介紹到資料庫相關部分,但如果要用api platform ,我們必須要讓實體類跟資料庫做連接
安裝完bundle後,打開我們先前所建立的實體類,
假設此實體類已經與資料庫做連接,
我們要在這個實體類上加上API Resource 註解式,讓這個實體類被視為一個API Class
/**
* @ORM\Entity
* @ORM\Table(name="test_entity")
* @TestCheck()
* @ApiResource()
*/
class TestEntity
{
/**
* @var int
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
* @ORM\Column(name="id", type="integer")
*/
private $id;
/**
* @ORM\Column(name="name",type="string",length=20,nullable=true)
* @Assert\NotBlank()
* @Assert\Length(max="20",min="5",maxMessage="長度不可超過20字",minMessage="長度不可低於5個字")
*/
private $name;
/**
* @ORM\Column(name="email",type="string",length=50,nullable=true)
* @Assert\Email()
*/
private $email;
/**
* @return int
*/
public function getId(): int
{
return $this->id;
}
/**
* @param int $id
*/
public function setId(int $id): void
{
$this->id = $id;
}
/**
* @return mixed
*/
public function getName()
{
return $this->name;
}
/**
* @param mixed $name
*/
public function setName($name): void
{
$this->name = $name;
}
}
記得要import ApiPlatform\Core\Annotation\ApiResource 這個class哦!
API Resource 裡 ,放置的是關於這個實體類的API屬性設定,
例如collectionOperations(針對多筆資料的設定) ,
itemOperations(針對單筆資料的設定),
normalizationContext(物件變成陣列的設定),
denormalizationContext(陣列轉成物件的設定),
attributes(一些其他的設定),
後面幾篇會一一提到以上所說的屬性設定
額外補充一下,config目錄下的子目錄route裡的api_platform.yaml檔裡可以進行api platform的設定
例如api的標題、版本、描述、是否提供elastic search、是否提供swagger介面做api文件的匯出、是否關閉api入口....等等
這一篇的API Source 還是空的,
下一篇開始會陸續把屬性設定加進去,這一篇由於是安裝及前置作業,就不講太多也不講得太複雜了
後面的設定跟使用也不會太困難~希望小菜鳥我的講解還算清楚...不會讓各位看官們產生我是誰我在哪我在幹嘛的錯覺